package com.larly.model.vo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;

import java.io.Serializable;
import java.util.Date;

import com.larly.model.domain.Notification;
import lombok.Data;
import org.springframework.beans.BeanUtils;

/**
 * 消息通知表
 *
 * @TableName notification
 */
@Data
public class NotificationVO implements Serializable {
    /**
     * 通知ID
     */
    private Integer id;

    /**
     * 接收者ID
     */
    private Integer receiverId;

    /**
     * 发送通知的用户ID（关联user表）
     */
    private Integer senderId;

    /**
     * 发送者昵称
     */
    private String senderNickname;

    /**
     * 发送者头像
     */
    private String senderAvatar;

    /**
     * 通知类型：1=点赞，2=评论，3=关注，4=私信
     */
    private Integer type;

    /**
     * 通知内容（如："用户A点赞了你的笔记"）
     */
    private String content;

    /**
     * 关联资源ID（如：点赞对应笔记ID，评论对应互动ID，关注无）
     */
    private Integer relatedId;

    /**
     * 是否已读：0=未读，1=已读
     */
    private Integer isRead;

    /**
     * 创建时间
     */
    private Date createdAt;

    @TableField(exist = false)
    private static final long serialVersionUID = 1L;

    /**
     * 从实体类转换
     */
    public static NotificationVO fromEntity(Notification notification, String senderNickname, String senderAvatar) {
        NotificationVO vo = new NotificationVO();
        BeanUtils.copyProperties(notification, vo);
        vo.setSenderNickname(senderNickname);
        vo.setSenderAvatar(senderAvatar);
        return vo;
    }
}